package com.caiyi.financial.nirvana.sms.gateway;

import com.caiyi.financial.nirvana.sms.entity.SmsGateway;
import com.caiyi.financial.nirvana.sms.entity.SmsReceiveMessage;
import com.caiyi.financial.nirvana.sms.queue.SendQueueEntity;
import io.netty.channel.ChannelHandlerContext;

/**
 * 短信网关
 */
public interface GateWay {

    // 网关启动
    void start() throws InterruptedException;

    // 初始化通道信息
    void init(SmsGateway info);

    // 通道连接成功
    void connectSuccess(ChannelHandlerContext context);

    // 登录成功后操作
    void loginSuccess();

    // 登录失败后操作
    void loginFail(int status, String message);

    // 发送短信
    void sendMessage(SendQueueEntity entity);

    // 收到submit回应
    void onSubmitResponse(int status, String messageId, String result);

    // 收到上行短信
    void receiveMessage(SmsReceiveMessage message);

    // 收到短信状态报告
    void receiveReport(int status, String messageId, String result);

    // 通道正在关闭
    void terminating();

    // 通道已经关闭
    void terminated();

    // 通道重连
    void doConnect();

    // 关闭通道
    void close();

}
